From 7e59ec4afcd8667e2ea4128acb3e321132838e86 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 16 May 2019 20:50:31 +0000 Subject: [PATCH] Add clock freezes to the profile --- gdk/gdkframeclockidle.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c index bb1e9c359c..92f5449f93 100644 --- a/gdk/gdkframeclockidle.c +++ b/gdk/gdkframeclockidle.c @@ -42,6 +42,9 @@ struct _GdkFrameClockIdlePrivate gint64 frame_time; gint64 min_next_frame_time; gint64 sleep_serial; +#ifdef G_ENABLE_DEBUG + gint64 freeze_time; +#endif guint flush_idle_id; guint paint_idle_id; @@ -558,6 +561,14 @@ gdk_frame_clock_idle_freeze (GdkFrameClock *clock) GdkFrameClockIdle *clock_idle = GDK_FRAME_CLOCK_IDLE (clock); GdkFrameClockIdlePrivate *priv = clock_idle->priv; +#ifdef G_ENABLE_DEBUG + if (priv->freeze_count == 0) + { + if (gdk_profiler_is_running ()) + priv->freeze_time = g_get_monotonic_time (); + } +#endif + priv->freeze_count++; maybe_stop_idle (clock_idle); } @@ -582,6 +593,20 @@ gdk_frame_clock_idle_thaw (GdkFrameClock *clock) priv->phase = GDK_FRAME_CLOCK_PHASE_NONE; priv->sleep_serial = get_sleep_serial (); + +#ifdef G_ENABLE_DEBUG + if (gdk_profiler_is_running ()) + { + if (priv->freeze_time != 0) + { + gint64 thaw_time = g_get_monotonic_time (); + gdk_profiler_add_mark (priv->freeze_time * 1000, + (thaw_time - priv->freeze_time) * 1000, + "freeze", ""); + priv->freeze_time = 0; + } + } +#endif } } -- 2.30.2